version 2.1.1

Added section names and minor UI improvements
This commit is contained in:
sairaj mote 2019-12-31 18:07:00 +05:30 committed by GitHub
parent f573d40aa1
commit 0455e7cd04
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -29,7 +29,7 @@
::-webkit-scrollbar {
width: 0.5em;
height: 0.5em;
height: 0.25em;
}
::-webkit-scrollbar-track {
@ -54,6 +54,7 @@
border: none;
-webkit-transition: background 0.2s ease;
transition: background 0.2s ease;
font-size: 1em;
}
button:hover {
@ -73,6 +74,8 @@
padding: 1em;
margin: 1em 0;
color: white;
border: none;
font-size: 1em;
}
#modal_container {
@ -101,8 +104,9 @@
color: white;
}
#article_creation_modal h3 {
#article_creation_modal h3, #article_creation_modal h4 {
font-weight: normal;
width: 100%;
}
#article_creation_modal input {
@ -111,17 +115,30 @@
display: flexbox;
width: 100%;
padding: 1em;
border: solid 1px rgba(0, 0, 0, 0.2);
border: none;
margin: 1em 0;
background: #111;
color: white;
}
#article_creation_modal select {
width: 100%;
padding: 1em;
background: #111;
color: white;
border: none;
font-size: 1em;
}
#article_creation_modal #section_settings, #article_creation_modal #section_names_select_settings {
width: 100%;
}
#article_creation_modal button {
margin: 1em 0;
}
#article_creation_modal button:first-of-type {
#article_creation_modal #hide_article_creation_modal {
margin-left: auto;
}
@ -141,11 +158,10 @@
-webkit-transition: opacity 0.2s ease;
transition: opacity 0.2s ease;
opacity: 0;
background: rgba(0, 0, 0, 0.8);
cursor: pointer;
padding: 0.5em;
height: 4em;
width: 2em;
padding: 1.5em;
height: 100%;
width: 4em;
z-index: 2;
position: absolute;
top: 50%;
@ -154,8 +170,15 @@
fill: white;
}
.gallery-container svg:nth-of-type(1) {
background: -webkit-gradient(linear, right top, left top, from(transparent), to(rgba(0, 0, 0, 0.6)));
background: linear-gradient(to left, transparent, rgba(0, 0, 0, 0.6));
}
.gallery-container svg:nth-of-type(2) {
right: 0;
background: -webkit-gradient(linear, left top, right top, from(transparent), to(rgba(0, 0, 0, 0.6)));
background: linear-gradient(to right, transparent, rgba(0, 0, 0, 0.6));
}
.gallery {
@ -172,6 +195,12 @@
scroll-snap-type: x mandatory;
}
.gallery-name {
font-weight: normal;
color: white;
background: #00fa9a;
}
.article-body {
display: -webkit-box;
display: -ms-flexbox;
@ -286,42 +315,65 @@
transform: translate(-50%, -50%);
height: 2em;
fill: teal;
overflow: visible;
}
.spin {
-webkit-animation: spin 1s infinite ease;
animation: spin 1s infinite ease;
.pulse .first-orb {
-webkit-animation: pulse 1s infinite ease;
animation: pulse 1s infinite ease;
}
@-webkit-keyframes spin {
.pulse .second-orb {
-webkit-animation: pulse 1s 0.1s infinite ease;
animation: pulse 1s 0.1s infinite ease;
}
.pulse .third-orb {
-webkit-animation: pulse 1s 0.2s infinite ease;
animation: pulse 1s 0.2s infinite ease;
}
@-webkit-keyframes pulse {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
-webkit-transform: scale(1);
transform: scale(1);
}
60% {
-webkit-transform: scale(1.5);
transform: scale(1.5);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
-webkit-transform: scale(1);
transform: scale(1);
}
}
@keyframes spin {
@keyframes pulse {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
-webkit-transform: scale(1);
transform: scale(1);
}
60% {
-webkit-transform: scale(1.5);
transform: scale(1.5);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
-webkit-transform: scale(1);
transform: scale(1);
}
}
@media only screen and (max-width: 720px) {
.article-body {
min-width: calc(100% - 5em);
min-width: 100%;
}
#article_container {
padding: 1em;
}
}
/*# sourceMappingURL=main.css.map */
</style>
</head>
<script>
@ -362,7 +414,10 @@
<input type="text" id="article_name" placeholder="Article name">
<input type="number" id="section_nums" placeholder="Section number">
<div id="section_names_select_settings"></div>
<div id="section_settings"></div>
<button id="hide_article_creation_modal" onclick="hide_article_creation_modal(this.parentNode)">Cancel</button>
<button id="create_article">Create</button>
</div>
@ -389,10 +444,17 @@
<button id="show_article_creation_modal" onclick="show_article_creation_modal()">Create article</button>
</nav>
<svg class="hide" id="spinner" viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
<path class='p2' d="M6.5,13.8c-2.2-0.5-3.9-2.3-4.4-4.5c-0.7-3.6,1.7-6.8,5-7.2C7.6,2,8,1.6,8,1.1v0c0-0.6-0.5-1.1-1.1-1
C2.5,0.7-0.8,4.9,0.2,9.6c0.6,3.1,2.9,5.5,6,6.2c4.8,1.1,9.1-2.2,9.8-6.7C16,8.5,15.5,8,14.9,8h0c-0.5,0-0.9,0.4-1,0.9
C13.5,12.2,10.2,14.7,6.5,13.8z"/>
<svg class="hide" id="spinner"viewBox="0 0 100 118" xml:space="preserve">
<style type="text/css">
.first-orb{fill:#00FA9A;}
.second-orb{fill:#00EDBF;}
.third-orb{fill:#1AA7BA;}
</style>
<g>
<circle class="first-orb" cx="54" cy="12" r="12"/>
<circle class="second-orb" cx="24" cy="42" r="24"/>
<circle class="third-orb" cx="68" cy="86" r="32"/>
</g>
</svg>
<section id="article_container">
@ -410,14 +472,14 @@
function prevArticle(container){
container.children[0].scrollBy({
top: 0,
left: -100,
left: -400,
behavior: 'smooth'
});
}
function nextArticle(container){
container.children[0].scrollBy({
top: 0,
left: 100,
left: 400,
behavior: 'smooth'
});
}
@ -7371,6 +7433,8 @@
floGlobals.vectorClock[message.object] = vc
compactIDB.writeData("vectorClocks", vc, message.object)
}
document.getElementById('current_data').innerHTML = '';
cloudArticleApp.showFullContentOfArticle(floGlobals.appObjects[cloudArticleApp.SUBJECT]);
}catch(error){
console.log(error)
}
@ -7389,6 +7453,8 @@
floGlobals.generalVC[event.filterStr] = vc
compactIDB.writeData("generalVC", vc, event.filterStr)
}
document.getElementById('current_data').innerHTML = '';
cloudArticleApp.showFullContentOfArticle(floGlobals.appObjects[cloudArticleApp.SUBJECT]);
}catch(error){
console.log(error)
}
@ -7406,12 +7472,12 @@
<script>
function onLoadStartUp() {
document.getElementById('spinner').classList.add('show', 'spin');
document.getElementById('spinner').classList.add('show', 'pulse');
initIndexedDB().then(result => {
console.log(result)
getCredentials().then(result => {
console.log(result)
////showMessage(`FLO_ID: ${myFloID}`)
//showMessage(`FLO_ID: ${myFloID}`)
readSubAdminListFromAPI().then(result => {
console.log(result)
readSupernodeListFromAPI().then(result => {
@ -7619,7 +7685,7 @@
SUBJECT: "testArticle4",
numberOfSections: 7,
numberOfSections: 5,
CONTENT_TYPE: "typeContentCollab4",
@ -7637,7 +7703,7 @@
},
showFullContentOfArticle: function(obj) {
document.getElementById('spinner').classList.remove('show', 'spin');
document.getElementById('spinner').classList.remove('show', 'pulse');
const full_data_div = document.getElementById('current_data'),
articleSubject = floGlobals.appObjects[this.SUBJECT];
@ -7669,6 +7735,11 @@
for(secKey in articleSubject[key].data) {
let tempCounter = 0;
const secObject = articleSubject[key].data[secKey];
if(typeof secObject.section_details==="object"
&& secObject.section_details.section_name.length) {
article_structure += `<h3 class="gallery-name">${secKey.toUpperCase()} ${secObject.section_details.section_name}</h3>`;
}
// Add non scored new entries from users
if(typeof new_entries_array[secKey]==="object") {
@ -7725,35 +7796,66 @@
</div>`;
tempCounter++;
}
if(tempCounter > 1 && window.innerWidth < 720)
if((tempCounter > 1 && window.innerWidth < 720) || (tempCounter > 3 && window.innerWidth > 720))
article_structure += `
</div>
<svg class="navigation-arrows" onclick="prevArticle(this.parentNode)" viewBox="0 0 71.94 67.88" style="enable-background:new 0 0 71.94 67.88;" xml:space="preserve">
<polygon points="71.94,29.94 15.31,29.94 39.6,5.66 33.94,0 5.66,28.28 5.66,28.28 0,33.94 5.66,39.6 5.66,39.6 33.94,67.88
39.6,62.23 15.31,37.94 71.94,37.94 "/>
<svg class="navigation-arrows" onclick="prevArticle(this.parentNode)" viewBox="0 0 50.91 90.51" style="enable-background:new 0 0 50.91 90.51;" xml:space="preserve">
<polygon points="5.66,50.91 45.25,90.51 50.91,84.85 11.31,45.25 50.91,5.66 45.25,0 5.66,39.6 0,45.25 "/>
</svg>
<svg class="navigation-arrows" onclick="nextArticle(this.parentNode)" viewBox="0 0 71.94 67.88" style="enable-background:new 0 0 71.94 67.88;" xml:space="preserve">
<polygon points="0,37.94 56.63,37.94 32.34,62.23 38,67.88 66.28,39.6 66.28,39.6 71.94,33.94 66.28,28.28 66.28,28.28 38,0
32.34,5.66 56.63,29.94 0,29.94 "/>
</svg>`;
if(tempCounter > 3 && window.innerWidth > 720)
article_structure += `
</div>
<svg class="navigation-arrows" onclick="prevArticle(this.parentNode)" viewBox="0 0 71.94 67.88" style="enable-background:new 0 0 71.94 67.88;" xml:space="preserve">
<polygon points="71.94,29.94 15.31,29.94 39.6,5.66 33.94,0 5.66,28.28 5.66,28.28 0,33.94 5.66,39.6 5.66,39.6 33.94,67.88
39.6,62.23 15.31,37.94 71.94,37.94 "/>
</svg>
<svg class="navigation-arrows" onclick="nextArticle(this.parentNode)" viewBox="0 0 71.94 67.88" style="enable-background:new 0 0 71.94 67.88;" xml:space="preserve">
<polygon points="0,37.94 56.63,37.94 32.34,62.23 38,67.88 66.28,39.6 66.28,39.6 71.94,33.94 66.28,28.28 66.28,28.28 38,0
32.34,5.66 56.63,29.94 0,29.94 "/>
<svg class="navigation-arrows" onclick="nextArticle(this.parentNode)" viewBox="0 0 50.91 90.51" style="enable-background:new 0 0 50.91 90.51;" xml:space="preserve">
<polygon points="45.25,39.6 5.66,0 0,5.66 39.6,45.25 0,84.85 5.66,90.51 45.25,50.91 50.91,45.25 "/>
</svg>`;
article_structure+=`</div>`;
}
}
full_data_div.innerHTML = article_structure;
//section_settings
if(!floGlobals.subAdmins.includes(myFloID)) return false;
const section_names_settings = document.getElementById('section_names_select_settings');
let section_settings_html = `<h4>Section Settings</h4>
<select class="form-control" id="topic_name_section" onchange="cloudArticleApp.pop_up_section_names_ui()">
<option>Choose Topic...</option>`;
Object.keys(floGlobals.appObjects[this.SUBJECT]).forEach(k=>{
section_settings_html += `<option>${k}</option>`;
});
section_settings_html += `</select>`;
section_names_settings.innerHTML = section_settings_html;
},
pop_up_section_names_ui: function() {
let sec_counter = 1;
let section_settings_html = ``;
const Topic = document.getElementById("topic_name_section").value;
const section_settings = document.getElementById("section_settings");
if(!Object.keys(floGlobals.appObjects[this.SUBJECT]).includes(Topic)) return;
section_settings.innerHTML="";
section_settings_html += `<h5>Section Names: </h5>`;
for(vals of Object.values(floGlobals.appObjects[this.SUBJECT][Topic].data)) {
section_settings_html += `<label for="section${sec_counter}">Section ${sec_counter}: </label>`;
section_settings_html += `<input type="text" id="section${sec_counter}" class="form-control" name="section_names_ip" value="${vals.section_details.section_name}">`;
sec_counter++;
}
section_settings_html += `<button class="btn btn-secondary" id="change-section-names-btn" onclick="cloudArticleApp.update_section_names()">Update Section Names</button>`;
section_settings.innerHTML = section_settings_html;
},
update_section_names: async function() {
if(!floGlobals.subAdmins.includes(myFloID)) return;
var sec_items = document.getElementsByName("section_names_ip");
let full_data = JSON.parse(JSON.stringify(floGlobals.appObjects[this.SUBJECT]));
const Topic = Object.keys(full_data)[0];
sec_items.forEach((y,i)=>{
i++;
full_data[Topic].data[`section${i}`].section_details.section_name=y.value;
});
floCloudAPI.updateObjectData(floGlobals.appObjects[this.SUBJECT], full_data, this.SUBJECT, {receiverID: floGlobals.adminID});
this.retrieveLatestContent();
},
retrieveLatestContent: async function(receiverID=floGlobals.adminID, senderIDs=floGlobals.subAdmins) {
@ -7773,25 +7875,35 @@
let content = '';
if(div=='article_creation_modal') {
//content = document.getElementById(`article_content${i}`).value;
new_article[article_name].data[`section${i}`] = {};
new_article[article_name].data[`section${i}`]["iteration0"] = {
new_article[article_name].data[`section${i}`] = {
section_details: {},
section_iters: {},
};
new_article[article_name].data[`section${i}`]["section_details"]={
section_name: ""
};
new_article[article_name].data[`section${i}`]["section_iters"]["iteration0"] = {
content: "",
content_creator: myFloID,
score: 0
}
} else if(div=='update_data_div') {
content = document.getElementById(`article_content_up`).value;
new_article[article_name].data[`section${i}`] = {};
if(i!==1) {
content = '';
}
new_article[article_name].data[`section${i}`]["iteration0"] = {
new_article[article_name].data[`section${i}`] = {
section_details: {},
section_iters: {},
};
new_article[article_name].data[`section${i}`]["section_details"]={
section_name: ""
};
if(i!==1) content = '';
new_article[article_name].data[`section${i}`]["section_iters"]["iteration0"] = {
content: content,
content_creator: myFloID,
score: 0
}
} else {
console.error('errror');
console.error('error');
}
}