Advertisement
Guest User

Untitled

a guest
Jun 17th, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. $(document).ready(function () {
  3.     buildNavigation(false);
  4.     showRegister();
  5. });
  6.  
  7. function buildLogin() {
  8.     var container = document.getElementById("container");
  9.  
  10.     var formContainer = document.createElement("div");
  11.     formContainer.id = "login_form";
  12.  
  13.     var title = document.createElement("div");
  14.     title.className = "form_title";
  15.     title.textContent = "LOGIN TO YOUR ACCOUNT";
  16.  
  17.     var form = document.createElement("form");
  18.     form.action = "javascript: login()";
  19.  
  20.     var usernameInput = document.createElement("input");
  21.     usernameInput.type = "text";
  22.     usernameInput.id = "login_username";
  23.     usernameInput.placeholder = "Username";
  24.  
  25.     var passwordInput = document.createElement("input");
  26.     passwordInput.type = "password";
  27.     passwordInput.id = "login_password";
  28.     passwordInput.placeholder = "Password";
  29.  
  30.     var submitBtn = document.createElement("input");
  31.     submitBtn.type = "submit";
  32.     submitBtn.value = "LOGIN";
  33.  
  34.     form.append(usernameInput);
  35.     form.append(passwordInput);
  36.     form.append(submitBtn);
  37.  
  38.     formContainer.append(title);
  39.     formContainer.append(form);
  40.  
  41.     container.append(formContainer);
  42. }
  43.  
  44. function buildRegister() {
  45.     var container = document.getElementById("container");
  46.  
  47.     var formContainer = document.createElement("div");
  48.     formContainer.id = "register_form";
  49.  
  50.     var title = document.createElement("div");
  51.     title.className = "form_title";
  52.     title.textContent = "REGISTER A NEW ACCOUNT";
  53.  
  54.     var form = document.createElement("form");
  55.     form.action = "javascript: register()";
  56.  
  57.     var usernameInput = document.createElement("input");
  58.     usernameInput.type = "text";
  59.     usernameInput.id = "login_username";
  60.     usernameInput.placeholder = "Username";
  61.  
  62.     var emailInput = document.createElement("input");
  63.     emailInput.type = "text";
  64.     emailInput.id = "login_email";
  65.     emailInput.placeholder = "Email";
  66.  
  67.     var passwordInput = document.createElement("input");
  68.     passwordInput.type = "password";
  69.     passwordInput.id = "login_password";
  70.     passwordInput.placeholder = "Password";
  71.  
  72.     var passwordConfirmInput = document.createElement("input");
  73.     passwordConfirmInput.type = "password";
  74.     passwordConfirmInput.id = "login_confirm_password";
  75.     passwordConfirmInput.placeholder = "Password (Confirm)";
  76.  
  77.     var submitBtn = document.createElement("input");
  78.     submitBtn.type = "submit";
  79.     submitBtn.value = "REGISTER";
  80.  
  81.     form.append(usernameInput);
  82.     form.append(emailInput);
  83.     form.append(passwordInput);
  84.     form.append(passwordConfirmInput);
  85.     form.append(submitBtn);
  86.  
  87.     formContainer.append(title);
  88.     formContainer.append(form);
  89.  
  90.     container.append(formContainer);
  91. }
  92.  
  93. function buildHome() {
  94.     buildPageStructure();
  95.  
  96.     buildProjectsActions(false);
  97.     buildTaskActions(false);
  98.  
  99.     buildProjectList();
  100.     buildTaskList();
  101.  
  102.     selectProject(0);
  103. }
  104.  
  105. function buildPageStructure() {
  106.     var container = document.getElementById("container");
  107.  
  108.     var projects = document.createElement("div");
  109.     projects.id = "projects";
  110.  
  111.     var projectsTitle = document.createElement("span");
  112.     projectsTitle.className = "section_title";
  113.     projectsTitle.innerText = "PROJECTS";
  114.  
  115.     var projectsActions = document.createElement("div");
  116.     projectsActions.className = "section_actions";
  117.     projectsActions.id = "project_actions";
  118.  
  119.     var projectList = document.createElement("ul");
  120.     projectList.id = "project_list";
  121.  
  122.     projects.append(projectsTitle);
  123.     projects.append(projectsActions);
  124.     projects.append(projectList);
  125.  
  126.     /*                              */
  127.  
  128.     var tasks = document.createElement("div");
  129.     tasks.id = "tasks";
  130.  
  131.     var tasksTitle = document.createElement("span");
  132.     tasksTitle.className = "section_title";
  133.     tasksTitle.innerText = "TASKS";
  134.  
  135.     var taskActions = document.createElement("div");
  136.     taskActions.className = "section_actions";
  137.     taskActions.id = "task_actions";
  138.  
  139.     var todoTaskList = document.createElement("ul");
  140.     todoTaskList.id = "todo_tasks";
  141.  
  142.     var completedTitle = document.createElement("span");
  143.     completedTitle.className = "section_title";
  144.     completedTitle.innerText = "COMPLETED";
  145.  
  146.     var completedTaskList = document.createElement("ul");
  147.     completedTaskList.id = "completed_tasks";
  148.  
  149.     tasks.append(tasksTitle);
  150.     tasks.append(taskActions);
  151.     tasks.append(todoTaskList);
  152.     tasks.append(document.createElement("br"));
  153.     tasks.append(completedTitle);
  154.     tasks.append(completedTaskList);
  155.  
  156.     container.append(projects);
  157.     container.append(tasks);
  158. }
  159.  
  160. function buildNavigation(logged) {
  161.     var nav = document.getElementById("nav_list");
  162.     $("#nav_list").empty();
  163.  
  164.     if (logged) {
  165.         nav.append(buildNavButton("HOME", "javascript: showHome()"));
  166.         nav.append(buildNavButton("ACCOUNT", "javascript: showAccount()"));
  167.         nav.append(buildNavButton("LOGOUT", "javascript: logout()"));
  168.     } else {
  169.         nav.append(buildNavButton("LOGIN", "javascript: showLogin()"));
  170.         nav.append(buildNavButton("REGISTER", "javascript: showRegister()"));
  171.     }
  172.  
  173. }
  174.  
  175. function buildNavButton(name, url) {
  176.  
  177.     var li = document.createElement("li");
  178.     var a = document.createElement("a");
  179.     a.href = url;
  180.     a.innerText = name;
  181.  
  182.     li.append(a);
  183.     return li;
  184. }
  185.  
  186. /**
  187.  * Creates an icon with an URL action (anchor),
  188.  * receives action url and image url.
  189.  */
  190. function buildAction(url, image) {
  191.  
  192.     var a = document.createElement("a");
  193.  
  194.     var img = document.createElement("img");
  195.     img.src = image
  196.  
  197.     if (url !== "") {
  198.         a.href = url;
  199.     }
  200.  
  201.     a.append(img);
  202.     return a;
  203. }
  204.  
  205. /**
  206.  * Builds the title actions on the projects list.
  207.  * This included loading the icons and respective action URLs,
  208.  * depending on the "selected" parameter, this determines if a project
  209.  * is selected.
  210.  */
  211. function buildProjectsActions(selected) {
  212.  
  213.     var actionsContainer = $("#project_actions");
  214.     actionsContainer.empty();
  215.  
  216.     actionsContainer.append(buildAction("javascript: addNewProject()", "/static/images/icon_add.png"));
  217.  
  218.     if (selected) {
  219.         actionsContainer.append(buildAction("javascript: editSelectedProject()", "/static/images/icon_edit.png"));
  220.         actionsContainer.append(buildAction("javascript: deleteSelectedProject()", "/static/images/icon_delete.png"));
  221.     } else {
  222.         actionsContainer.append(buildAction("", "/static/images/icon_edit_faded.png"));
  223.         actionsContainer.append(buildAction("", "/static/images/icon_delete_faded.png"));
  224.     }
  225. }
  226.  
  227. /**
  228.  * Builds the title actions on the to-do tasks list.
  229.  * This included loading the icons and respective action URLs,
  230.  * depending on the "selected" parameter, this determines if a task
  231.  * is selected.
  232.  */
  233. function buildTaskActions(selected) {
  234.     var actionsContainer = $("#task_actions");
  235.     actionsContainer.empty();
  236.  
  237.     if (selected) {
  238.         var completion = buildAction("javascript: changeCompletion()", "/static/images/icon_complete.png");
  239.         completion.id = "completion_action";
  240.  
  241.         actionsContainer.append(completion);
  242.         actionsContainer.append(buildAction("javascript: moveTask(1)", "/static/images/icon_up.png"));
  243.         actionsContainer.append(buildAction("javascript: moveTask(-1)", "/static/images/icon_down.png"));
  244.     } else {
  245.         actionsContainer.append(buildAction("", "/static/images/icon_complete_faded.png"));
  246.         actionsContainer.append(buildAction("", "/static/images/icon_up_faded.png"));
  247.         actionsContainer.append(buildAction("", "/static/images/icon_down_faded.png"));
  248.     }
  249.  
  250.     var sep = document.createElement("div");
  251.     sep.className = "actions_seperator";
  252.     actionsContainer.append(sep);
  253.  
  254.     actionsContainer.append(buildAction("javascript: addNewTask()", "/static/images/icon_add.png"));
  255.  
  256.     if (selected) {
  257.         actionsContainer.append(buildAction("javascript: editSelectedTask()", "/static/images/icon_edit.png"));
  258.         actionsContainer.append(buildAction("javascript: deleteSelectedTask()", "/static/images/icon_delete.png"));
  259.     } else {
  260.         actionsContainer.append(buildAction("", "/static/images/icon_edit_faded.png"));
  261.         actionsContainer.append(buildAction("", "/static/images/icon_delete_Faded.png"));
  262.     }
  263. }
  264.  
  265. /**
  266.  * Builds the list of projects displayed on the left side.
  267.  */
  268. function buildProjectList() {
  269.     var tempArray = [{ 'title': 'Projeto PI', 'date': '13/06/2018 18:32' }, { 'title': 'Neural Net Test', 'date': '13/06/2018 18:32' }]; /*<-------------------------------------------- replace later */
  270.  
  271.     var list = $("#project_list");
  272.     list.empty();
  273.  
  274.     for (var i = 0; i < tempArray.length; i++) {
  275.         var a = document.createElement("a");
  276.         a.href = "javascript: selectProject(" + i + ")";
  277.  
  278.         var li = document.createElement("li");
  279.  
  280.         var title = document.createElement("div");
  281.         title.className = "project_title";
  282.         title.textContent = tempArray[i]['title'];
  283.  
  284.         var date = document.createElement("div");
  285.         date.className = "project_last_updated";
  286.         date.textContent = tempArray[i]['date'];
  287.  
  288.         li.append(title);
  289.         li.append(date);
  290.  
  291.         a.append(li);
  292.         list.append(a);
  293.     }
  294. }
  295.  
  296. /**
  297.  * Builds the list of tasks displayed on the right side.
  298.  */
  299. function buildTaskList() {
  300.     var tempArray = [
  301.         { 'title': 'Terminar HTML da tabela de sessões', 'date': 'Due: 20/06/2018 00:00', 'completed': true },
  302.         { 'title': 'Implementar POST de utilizadores', 'date': 'Due: 20/06/2018 00:00', 'completed': false }]; /*<-------------------------------------------- replace later */
  303.  
  304.     var todoList = $("#todo_tasks");
  305.     todoList.empty();
  306.  
  307.     var completedList = $("#completed_tasks");
  308.     completedList.empty();
  309.  
  310.     var todoCount = 0;
  311.     var completedCount = 0;
  312.  
  313.     for (var i = 0; i < tempArray.length; i++) {
  314.         var a = document.createElement("a");
  315.         a.href = "javascript: selectTask(" + (tempArray[i]['completed'] ? completedCount : todoCount) + ", " + tempArray[i]['completed'] + ")";
  316.  
  317.         var li = document.createElement("li");
  318.  
  319.         var title = document.createElement("div");
  320.         title.className = "task_title";
  321.         title.textContent = tempArray[i]['title'];
  322.  
  323.         var date = document.createElement("div");
  324.         date.className = "task_due_date";
  325.         date.textContent = tempArray[i]['date'];
  326.  
  327.         li.append(title);
  328.         li.append(date);
  329.  
  330.         a.append(li);
  331.  
  332.         if (tempArray[i]['completed']) {
  333.             completedList.append(a);
  334.             completedCount++;
  335.         } else {
  336.             todoList.append(a);
  337.             todoCount++;
  338.         }
  339.  
  340.     }
  341.  
  342. }
  343.  
  344. function selectProject(index) {
  345.  
  346.     unselectAllProjects();
  347.  
  348.     var list = $("#project_list");
  349.     var elem = list.children().eq(index);
  350.     var li = elem.children().first();
  351.     li.addClass("selected_project");
  352.  
  353.     buildProjectsActions(true);
  354.     displayTasks(index);
  355. }
  356.  
  357. function unselectAllProjects() {
  358.     $('#project_list').children().each(function () {
  359.         var li = this.children[0];
  360.         li.className = "";
  361.     });
  362. }
  363.  
  364. function displayTasks(projectIndex) {
  365.  
  366. }
  367.  
  368. function addNewProject() {
  369.     alert("add");
  370. }
  371.  
  372. function editSelectedProject() {
  373.     alert("edit");
  374. }
  375.  
  376. function deleteSelectedProject() {
  377.     var r = confirm("This will permanently delete this project, are you sure?");
  378.     if (r == true) {
  379.         //enviar request/* <-------------------------------------------- replace later */
  380.         //quando retornar:
  381.         buildProjectList();
  382.     }
  383. }
  384.  
  385. function addNewTask() {
  386.  
  387. }
  388.  
  389. function editSelectedTask() {
  390.  
  391. }
  392.  
  393. function deleteSelectedTask() {
  394.     var r = confirm("This will permanently delete this task, are you sure?");
  395.     if (r == true) {
  396.         //enviar request
  397.         //quando retornar: /*<-------------------------------------------- replace later */
  398.         buildTaskList();
  399.     }
  400. }
  401.  
  402. function changeCompletion(complete) {
  403.  
  404. }
  405.  
  406. function moveTask(offset) {
  407.  
  408. }
  409.  
  410. function displayCompletion(complete) {
  411.     var completeAction = document.getElementById("completion_action");
  412.     var img = completeAction.children[0];
  413.     img.src = complete ? "/static/images/icon_complete.png" : "/static/images/icon_undo.png";
  414. }
  415.  
  416. function selectTask(index, completed) {
  417.     unselectAllTasks();
  418.  
  419.     var list = $(completed ? "#completed_tasks" : "#todo_tasks");
  420.     var elem = list.children().eq(index);
  421.     var li = elem.children().first();
  422.     li.addClass("selected_task");
  423.  
  424.     buildTaskActions(true);
  425.     displayCompletion(!completed);
  426.  
  427. }
  428.  
  429. function unselectAllTasks() {
  430.     $('#todo_tasks').children().each(function () {
  431.         var li = this.children[0];
  432.         li.className = "";
  433.     });
  434.  
  435.     $('#completed_tasks').children().each(function () {
  436.         var li = this.children[0];
  437.         li.className = "";
  438.     });
  439. }
  440.  
  441. function login() {
  442.  
  443.     var username = $("#login_username").val()
  444.     var password = $("#login_password").val();
  445.  
  446.     if (username.length > 0 && password.length > 0) {
  447.  
  448.         var req = new XMLHttpRequest();
  449.         req.open("POST", "/api/user/login/");
  450.         req.addEventListener("load", function() {
  451.             buildNavigation(true);
  452.             showHome();
  453.          });
  454.          req.setRequestHeader("Content-type", "application/json");
  455.         req.send(JSON.stringify({'username' : username, 'password' : password}));
  456.         }
  457.     }
  458.  
  459.  
  460. function register() {
  461.     var email = $("#login_email").val()
  462.     var username = $("#login_username").val()
  463.     var password = $("#login_password").val();
  464.     var passwordConfirm = $("#login_confirm_password").val();
  465.  
  466.     if (email.length >0 && username.length > 0 && password.length > 0 && passwordConfirm.length > 0 && passwordConfirm === password) {
  467.  
  468.         var req = new XMLHttpRequest();
  469.         req.open("POST", "/api/user/register/");
  470.         req.addEventListener("load", function() {
  471.             json = this.responseText;
  472.             if(!json.hasOwnProperty('status')){
  473.                 buildNavigation(true);
  474.                 showHome();
  475.             }
  476.          });
  477.         req.setRequestHeader("Content-type", "application/json");
  478.         req.send(JSON.stringify({'email' : email, 'username' : username, 'password':password}));
  479.         }
  480.     }
  481.  
  482.  
  483. function logout() {
  484.     //logout action /*<-------------------------------------------- replace later */
  485.     buildNavigation(false);
  486.     showLogin();
  487. }
  488.  
  489. function showHome() {
  490.     $("#container").empty();
  491.     buildHome();
  492. }
  493.  
  494. function showLogin() {
  495.     $("#container").empty();
  496.     buildLogin();
  497. }
  498.  
  499. function showRegister() {
  500.     $("#container").empty();
  501.     buildRegister();
  502. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement