r343 - in trunk/chorem-webmotion/src/main: java/org/chorem/webmotion/actions/project java/org/wikitty/web/jsptag resources webapp/WEB-INF/jsp webapp/js
Author: meynier Date: 2013-06-20 12:37:21 +0200 (Thu, 20 Jun 2013) New Revision: 343 Url: http://chorem.org/projects/chorem/repository/revisions/343 Log: Quotation status update added in dashboard Added: trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/project/Extensions.java trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/project/QuotationStatusAction.java trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/simpleWikiFields.jsp Modified: trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/project/DashboardProjectAction.java trunk/chorem-webmotion/src/main/java/org/wikitty/web/jsptag/WikittyInput.java trunk/chorem-webmotion/src/main/resources/mapping trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/dashboardSingleProject.jsp trunk/chorem-webmotion/src/main/webapp/js/chorem.js Modified: trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/project/DashboardProjectAction.java =================================================================== --- trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/project/DashboardProjectAction.java 2013-06-17 16:12:18 UTC (rev 342) +++ trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/project/DashboardProjectAction.java 2013-06-20 10:37:21 UTC (rev 343) @@ -3,11 +3,13 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; +import java.util.TreeMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.debux.webmotion.server.WebMotionController; import org.chorem.ChoremClient; +import org.chorem.ChoremUtil; import org.debux.webmotion.server.call.Call; import org.debux.webmotion.server.render.Render; import org.chorem.entities.Quotation; @@ -33,7 +35,7 @@ WikittyQueryResult<Quotation> quotationResult = null; WikittyQueryResult<Task> taskResult = null; HashMap<Quotation, List<Task>> taskMap = new HashMap<Quotation, List<Task>>(); - HashMap<Quotation, WikittyExtension> extMap = new HashMap<Quotation, WikittyExtension>(); + //HashMap<Quotation, String> extMap = new HashMap<Quotation, String>(); //Fetch the project form the name (if it has been requested) if(id != null) { @@ -67,7 +69,6 @@ taskResult = client.findAllByQuery(Task.class, taskQuery); taskMap.put(quote, taskResult.getAll()); - extMap.put(quote, getNextExtension(client, quote)); } @@ -88,7 +89,8 @@ else { return renderView("dashboardSingleProject.jsp", "title", "Tableau de bord projet", "projects", projectResult.getAll(), - "quotations", quotationResult.getAll(), "taskMap", taskMap, "extMap", extMap); + "quotations", quotationResult.getAll(), "taskMap", taskMap, "extensions", + Extensions.extensions); } } @@ -97,28 +99,26 @@ } - - private WikittyExtension getNextExtension(ChoremClient client,Quotation object) { + /* + private String getNextExtension(ChoremClient client,Quotation object) { Collection<String> extensions = object.getExtensionNames(); if(extensions.contains("Closed")) return null; + TreeMap<Integer, String> extMap = new TreeMap<Integer, String>(); - String[] exts = {"Quotation", "Draft", "Sent", "Rejected", "Accepted", "Started", - "Delivered", "RSV", "Warranty", "Closed"}; //reverse loop for(int i = exts.length-1; i>=0; i--) { if(extensions.contains(exts[i])) { WikittyExtension ret = client.restoreExtensionLastVersion(exts[i+1]); - System.out.println("EXTENSION : " + ret); return ret; } } return null; - } + }*/ } Added: trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/project/Extensions.java =================================================================== --- trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/project/Extensions.java (rev 0) +++ trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/project/Extensions.java 2013-06-20 10:37:21 UTC (rev 343) @@ -0,0 +1,16 @@ +package org.chorem.webmotion.actions.project; + +public interface Extensions { + public static final String[] extensions = { + "Quotation", + "Draft", + "Sent", + "Rejected", + "Accepted", + "Started", + "Delivered", + "RSV", + "Warranty", + "Closed" + }; +} Added: trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/project/QuotationStatusAction.java =================================================================== --- trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/project/QuotationStatusAction.java (rev 0) +++ trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/project/QuotationStatusAction.java 2013-06-20 10:37:21 UTC (rev 343) @@ -0,0 +1,79 @@ +package org.chorem.webmotion.actions.project; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.chorem.ChoremClient; +import org.chorem.ChoremUtil; +import org.chorem.webmotion.actions.GenericAction; +import org.debux.webmotion.server.WebMotionController; +import org.debux.webmotion.server.call.Call; +import org.debux.webmotion.server.render.Render; +import org.nuiton.wikitty.entities.Wikitty; +import org.nuiton.wikitty.entities.WikittyExtension; +import org.nuiton.wikitty.entities.WikittyImpl; + +public class QuotationStatusAction extends GenericAction{ + + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog(QuotationStatusAction.class); + + public Render upgrade(ChoremClient client, String id, String[] extension, Call call) { + Wikitty w = upgradeInternal(client, id, extension, call); + getContext().addInfoMessage("message", "Object saved"); + return renderURL("/wikitty/view/"+w.getWikittyId()); + } + + /** + * Method used by save and saveJson to actually perform the save action + * @param client + * @param id + * @param extension + * @param call + * @return the saved wikitty + */ + protected Wikitty upgradeInternal(ChoremClient client, String id, String[] extensionStr, Call call) { + + log.debug("save: " + id); + System.out.println("EXTENSIONS §§§§ : "); + System.out.println(Arrays.toString(extensionStr)); + System.out.println(ChoremUtil.asList(null, extensionStr)); + Wikitty w = client.restore(id); + if (w == null) { // Jamais sensé arriver + w = new WikittyImpl(); + } + + //System.out.println("Nom de l'extension : " + extensions); + List<String> extList = ChoremUtil.asList(null, extensionStr); + if(extList == null) + return w; + Collection<WikittyExtension> exts = client.restoreExtensionLastVersion(extList); + + System.out.println("EXTENSION : " + exts); + w.addExtension(exts); + Map<String, Object> params = call.getExtractParameters(); + String error = setWikittyField(w, "", params); + client.store(w); + + return w; + } + + + public Render getExtension(ChoremClient client, String extensionName, String id) { + Collection<String> c = new ArrayList<String>(); + c.add(extensionName); + Wikitty wikitty = client.restore(id); + List<WikittyExtension> extensions = client.restoreExtensionAndDependenciesLastVesion(c); + + extensions.removeAll(wikitty.getExtensions()); + + + return renderView("simpleWikiFields.jsp", "extensions", extensions, "wikitty", wikitty); + } + +} Modified: trunk/chorem-webmotion/src/main/java/org/wikitty/web/jsptag/WikittyInput.java =================================================================== --- trunk/chorem-webmotion/src/main/java/org/wikitty/web/jsptag/WikittyInput.java 2013-06-17 16:12:18 UTC (rev 342) +++ trunk/chorem-webmotion/src/main/java/org/wikitty/web/jsptag/WikittyInput.java 2013-06-20 10:37:21 UTC (rev 343) @@ -110,19 +110,13 @@ String fieldName = WikittyUtil.getFieldNameFromFQFieldName(fqfield); FieldType field = null; try { - System.out.println("JE TENTE DE RECUPERER LE TYPE"); field = wikitty.getFieldType(fqfield); - System.out.println("LE TYPE EXISTE"); } catch(Exception e) { - System.out.println("LE TYPE N'EXISTE PAS"); - System.out.println("JE CATCH L'EXCEPTION"); if(extension == null) { - System.out.println("extension EST NULL"); throw new JspException(e); } else { - System.out.println("JE RECUPERE LE TYPE DEPUIS L'EXTENSION"); field = extension.getFieldType(WikittyUtil.getFieldNameFromFQFieldName(fqfield)); emptyField = true; } Modified: trunk/chorem-webmotion/src/main/resources/mapping =================================================================== --- trunk/chorem-webmotion/src/main/resources/mapping 2013-06-17 16:12:18 UTC (rev 342) +++ trunk/chorem-webmotion/src/main/resources/mapping 2013-06-20 10:37:21 UTC (rev 343) @@ -36,6 +36,7 @@ * /wikitty/delete/{id} action:GenericAction.delete * /wikitty/save action:GenericAction.save * /wikitty/saveMulti action:GenericAction.saveMulti +* /wikitty/upgrade action:project.QuotationStatusAction.upgrade * /wikitty/view/{id}/{extension}/{field} action:GenericAction.download wmDecoratorNo=true * /wikitty-json/searchField?q={query} action:GenericAction.searchFieldJson * /wikitty-json/search?q={query} action:GenericAction.searchJson @@ -67,5 +68,6 @@ * /sales/funnel/json/{method} action:sales.SalesAction.{method} * /sales/funnel/json/{method}/{id} action:sales.SalesAction.{method} * /project action:project.DashboardProjectAction.requestProject +* /project/json/{method}/{extensionName}/{id} action:project.QuotationStatusAction.{method} * /crm/account/{id} action:crm.AccountAction.view * /crm/quotation/edit/{id} action:crm.QuotationAction.edit Modified: trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/dashboardSingleProject.jsp =================================================================== --- trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/dashboardSingleProject.jsp 2013-06-17 16:12:18 UTC (rev 342) +++ trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/dashboardSingleProject.jsp 2013-06-20 10:37:21 UTC (rev 343) @@ -27,31 +27,34 @@ <%@ taglib uri="/WEB-INF/wikitty.tld" prefix="w"%> <h1>${title}</h1> -<form class="well form-inline" method="GET"> +<form class="well form-inline" method="GET" id="projectSearch"> <div class="control-group"> Project Name : <div class="controls" style="display: inline"> <script> - $(function() { - $( "#project_text" ).autocompleteByExtension({ - source: "/chorem/wikitty-json/search?extension=Project", - minLength: 2, - select: function( event, ui ) { - $( "#project_text" ).val( ui.item.label ); - $( "#project_hidden" ).val( ui.item.id ); + $(function() { + $("#project_text") + .autocompleteByExtension( + { + source : "/chorem/wikitty-json/search?extension=Project", + minLength : 2, + select : function(event, ui) { + $("#project_text").val( + ui.item.label); + $("#project_hidden") + .val(ui.item.id); + $("#project_hidden").change() + return false; + } + }); + }); + </script> - return false; - } - }); - }); - </script> - <input type="text" id="project_text" name="project_name" value="${param.project_name}" placeholder="project name" /> <input - type="hidden" id="project_hidden" name="project_id" value="" /> <input - type="submit" class="btn" /> + type="hidden" id="project_hidden" name="project_id" value="" /> </div> </div> @@ -81,8 +84,8 @@ <th>Amount</th> </tr> </thead> - </thead> + <tbody> <tr> <td><w:display wikitty="${q.wikitty}" @@ -99,7 +102,6 @@ value="${q.amount / q.estimatedDays}" /></td> <td class="currency"><w:display wikitty="${q.wikitty}" fqfield="Quotation.amount" label="" /></td> - </td> </tr> </tbody> @@ -130,29 +132,54 @@ </c:forEach> + <p> + <select class="extBox" name="extList" wikittyId="${q.wikittyId}"> + <option>Transformer en...</option> + <c:forEach items="${extensions}" var="ext"> - <c:forEach items="${extMap}" var="entry"> - <c:if test="${entry.key.equals(q)}"> - <c:if test="${entry.value != null}"> - ${entry.value.fieldNames} - <c:forEach items="${entry.value.fieldNames}" var="field"> + <c:set var="contains" value="false" /> + <c:forEach var="item" items="${q.extensionNames}"> + <c:if test="${item eq ext}"> + <c:set var="contains" value="true" /> + </c:if> + </c:forEach> + + <c:if test="${contains == false}"> + <option>${ext}</option> + </c:if> + + </c:forEach> + </select> + </p> + <div id="upgradeFields-${q.wikittyId}"> + + </div> + + <!-- + + <form class="form-horizontal" method="post" + accept-charset="ISO-8859-15" + action="<c:url value="/wikitty/upgrade"/>" + enctype="multipart/form-data"> + <input type="hidden" name="id" value="${q.wikittyId}"> + <c:if test="${extMap[q] != null}"> + <fieldset> + <input type="hidden" name="extension" value="${extMap[q].name}"> + <c:forEach items="${extMap[q].fieldNames}" var="field"> ${field} <div class="control-group"> <label class="control-label">${fieldName}</label> <div class="controls"> <w:input wikitty="${q.wikitty}" - fqfield="${entry.value.name}.${field}" extension="${entry.value}" /> + fqfield="${extMap[q].name}.${field}" extension="${extMap[q]}" /> </div> </div> </c:forEach> - <input type="button" value="Tranformer en ${entry.value.name}" /> - - </c:if> + <input type="submit" value="Tranformer en ${extMap[q].name}" /> + </fieldset> </c:if> - - - - </c:forEach> + </form> + --> </c:forEach> </c:when> Added: trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/simpleWikiFields.jsp =================================================================== --- trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/simpleWikiFields.jsp (rev 0) +++ trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/simpleWikiFields.jsp 2013-06-20 10:37:21 UTC (rev 343) @@ -0,0 +1,49 @@ +<%-- + #%L + Chorem webmotion + $Id:$ + $HeadURL:$ + %% + Copyright (C) 2011 - 2012 CodeLutin + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + #L% + --%> +<%@page contentType="text/html" pageEncoding="UTF-8"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="f"%> +<%@ taglib uri="/WEB-INF/wikitty.tld" prefix="w"%> + +<form class="form-horizontal" method="post" accept-charset="ISO-8859-15" + action="<c:url value="/wikitty/upgrade"/>" + enctype="multipart/form-data"> + <input type="hidden" name="id" value="${wikitty.id}"> + <c:forEach items="${extensions}" var="ext"> + <legend>${ext.name}</legend> + <input type="hidden" name="extension" value="${ext.name}"> + <c:forEach items="${ext.fieldNames}" var="field"> + <div class="control-group"> + <label class="control-label">${field}</label> + <div class="controls"> + <w:input wikitty="${wikitty}" fqfield="${ext.name}.${field}" + extension="${ext}" /> + </div> + </div> + </c:forEach> + </c:forEach> + <button class="btn btn-success" type="submit"> + <i class="icon-ok icon-white"></i> + Mettre à jour + </button> +</form> \ No newline at end of file Modified: trunk/chorem-webmotion/src/main/webapp/js/chorem.js =================================================================== --- trunk/chorem-webmotion/src/main/webapp/js/chorem.js 2013-06-17 16:12:18 UTC (rev 342) +++ trunk/chorem-webmotion/src/main/webapp/js/chorem.js 2013-06-20 10:37:21 UTC (rev 343) @@ -22,464 +22,512 @@ */ function createUrl() { - var result = webContext; - for (var i = 0; i < arguments.length; i++) { - result += arguments[i]; - } - result = result.replace('//', '/'); - return result; + var result = webContext; + for (var i = 0; i < arguments.length; i++) { + result += arguments[i]; + } + result = result.replace('//', '/'); + return result; } $(function() { - $('.withTooltip').tooltip({html:true}); + $('.withTooltip').tooltip({html:true}); }); $(function() { - $('.withPopover').popover({trigger: 'click', html:true}); + $('.withPopover').popover({trigger: 'click', html:true}); }); $(function () { - $.datepicker.setDefaults($.datepicker.regional['fr']); - $.timepicker.setDefaults($.timepicker.regional['fr']); + $.datepicker.setDefaults($.datepicker.regional['fr']); + $.timepicker.setDefaults($.timepicker.regional['fr']); }); +function initFields() { +// tout ce qui aura la classe datepicker servira a editer une date + $(function() { + $( ".datepicker" ).datepicker({ + showWeek: true, + firstDay: 1, + changeMonth: true, + changeYear: true + }); +// "option", "gotoCurrent", true ); + }); + $(function() { + $( ".timepicker" ).timepicker({ + showWeek: true, + firstDay: 1, + changeMonth: true, + changeYear: true + }); +// "option", "gotoCurrent", true ); + }); +// tout ce qui aura la classe datetimepicker servira a editer une date avec heure + $(function() { + $( ".datetimepicker" ).datetimepicker({ + showWeek: true, + firstDay: 1, + changeMonth: true, + changeYear: true + }); +// "option", "gotoCurrent", true ); + }); -// tout ce qui aura la classe datepicker servira a editer une date -$(function() { - $( ".datepicker" ).datepicker({ - showWeek: true, - firstDay: 1, - changeMonth: true, - changeYear: true - }); -// "option", "gotoCurrent", true ); -}); -$(function() { - $( ".timepicker" ).timepicker({ - showWeek: true, - firstDay: 1, - changeMonth: true, - changeYear: true - }); -// "option", "gotoCurrent", true ); -}); -// tout ce qui aura la classe datetimepicker servira a editer une date avec heure -$(function() { - $( ".datetimepicker" ).datetimepicker({ - showWeek: true, - firstDay: 1, - changeMonth: true, - changeYear: true - }); -// "option", "gotoCurrent", true ); -}); -// nouveau composant pour afficher les wikitties lors de l'edition classe par extension +} +initFields(); + +//nouveau composant pour afficher les wikitties lors de l'edition classe par extension $.widget( "custom.autocompleteByExtension", $.ui.autocomplete, { - _renderMenu: function( ul, items ) { - var self = this, - currentExtension = ""; - // ajout d'un element pour permettre l'effacement de l'ancienne entree - self._renderItemData( ul, {label:"None", value:"None", name:"None"} ); - $.each( items, function( index, item ) { - if ( item.extension != currentExtension ) { - ul.append( "<li class='ui-autocomplete-category'>" + item.extension + "</li>" ); - currentExtension = item.extension; - } - self._renderItemData( ul, item ); - }); - } + _renderMenu: function( ul, items ) { + var self = this, + currentExtension = ""; + // ajout d'un element pour permettre l'effacement de l'ancienne entree + self._renderItemData( ul, {label:"None", value:"None", name:"None"} ); + $.each( items, function( index, item ) { + if ( item.extension != currentExtension ) { + ul.append( "<li class='ui-autocomplete-category'>" + item.extension + "</li>" ); + currentExtension = item.extension; + } + self._renderItemData( ul, item ); + }); + } }); +//ajout ble +//clic sur les cases à cocher half-day d'une vacation (VacationRequest) -// ajout ble -// clic sur les cases à cocher half-day d'une vacation (VacationRequest) - function change12or00(dt,dtVal,tim) { - if (tim) { - dtVal = dtVal.substring(0,11)+"12:00"; - } - else { - dtVal = dtVal.substring(0,11)+"00:00"; - } - dt.val(dtVal); + if (tim) { + dtVal = dtVal.substring(0,11)+"12:00"; + } + else { + dtVal = dtVal.substring(0,11)+"00:00"; + } + dt.val(dtVal); } $(document).ready(function() { - $('.beginDateTR :checkbox').change(function(){ - var dtetim = $(this).parent().parent().children('.beginDateTD').children('input'); - var dtetimVal = dtetim.attr("value"); - change12or00(dtetim,dtetimVal,$(this).attr("checked")); - }); + $('.beginDateTR :checkbox').change(function(){ + var dtetim = $(this).parent().parent().children('.beginDateTD').children('input'); + var dtetimVal = dtetim.attr("value"); + change12or00(dtetim,dtetimVal,$(this).attr("checked")); + }); }); $(document).ready(function() { - $('.endDateTR :checkbox').change(function(){ - var dtetim = $(this).parent().parent().children('.endDateTD').children('input'); - var dtetimVal = dtetim.attr("value"); - change12or00(dtetim,dtetimVal,$(this).attr("checked")); - }); + $('.endDateTR :checkbox').change(function(){ + var dtetim = $(this).parent().parent().children('.endDateTD').children('input'); + var dtetimVal = dtetim.attr("value"); + change12or00(dtetim,dtetimVal,$(this).attr("checked")); + }); }); -// ajout d'une vacation dans editVacationRequest +//ajout d'une vacation dans editVacationRequest $(document).ready(function() { - $('#btn-vacation-add').click(function(){ + $('#btn-vacation-add').click(function(){ - jQuery.ajax({ - type: 'GET', - url: createUrl('/hr/vacationDiv/new'), - data:'', - sucess: function(data, textStatus, jqXHR){ - - }, - error: function(jqXHR, textStatus, errorThrown) { - - } - }) - }) - + jQuery.ajax({ + type: 'GET', + url: createUrl('/hr/vacationDiv/new'), + data:'', + sucess: function(data, textStatus, jqXHR){ + + }, + error: function(jqXHR, textStatus, errorThrown) { + + } + }) + }) + }); $(document).ready(function($) { - // ******************************************************************** - // * ACCOUNT EDITING * - // ******************************************************************** + // ******************************************************************** + // * ACCOUNT EDITING * + // ******************************************************************** - //Edition inline des ContactDetails - $(".contactDetail-edit-inline").click(function() { - var button = $(this); - var span = button.parent().children("span[wikittyId].value"); - var value = span.text(); - var id = span.attr('wikittyId'); - var input = $("<input type='text' value='"+value+"'></input>"); - input.keyup(function (e) { - if (e.keyCode == 13) { - value = input.val(); - $.get(createUrl("/wikitty-json/save?id=", id, "&extension=ContactDetails&ContactDetails.value=", value), - function(){ - //success - span.text(value); - input.replaceWith(span); - //ajoute un logo ok - var okIcon = $("<i class='icon-ok'></i>"); - button.after(okIcon); - //timeout 3s - setTimeout(function() { okIcon.remove(); }, 3000); - }).fail(function(){ - //fail - input.replaceWith(span); - //ajoute un logo erreur - var errorIcon = $("<i class='icon-exclamation-sign'></i>"); - button.after(errorIcon); - //timeout 3s - setTimeout(function() { errorIcon.remove(); }, 3000); + //Edition inline des ContactDetails + $(".contactDetail-edit-inline").click(function() { + var button = $(this); + var span = button.parent().children("span[wikittyId].value"); + var value = span.text(); + var id = span.attr('wikittyId'); + var input = $("<input type='text' value='"+value+"'></input>"); + input.keyup(function (e) { + if (e.keyCode == 13) { + value = input.val(); + $.get(createUrl("/wikitty-json/save?id=", id, "&extension=ContactDetails&ContactDetails.value=", value), + function(){ + //success + span.text(value); + input.replaceWith(span); + //ajoute un logo ok + var okIcon = $("<i class='icon-ok'></i>"); + button.after(okIcon); + //timeout 3s + setTimeout(function() { okIcon.remove(); }, 3000); + }).fail(function(){ + //fail + input.replaceWith(span); + //ajoute un logo erreur + var errorIcon = $("<i class='icon-exclamation-sign'></i>"); + button.after(errorIcon); + //timeout 3s + setTimeout(function() { errorIcon.remove(); }, 3000); - }); + }); - } else if (e.keyCode == 27) { - input.replaceWith(span); - } - }); - input.blur(function() { - input.replaceWith(span); - }); + } else if (e.keyCode == 27) { + input.replaceWith(span); + } + }); + input.blur(function() { + input.replaceWith(span); + }); - span.replaceWith(input); - input.focus(); - }); + span.replaceWith(input); + input.focus(); + }); - //Ajout d'une note sur un compte client - $(".add-note").submit(function() { - var form = $(this).get(0); - var title = $("#note-title").val(); - var content = $("#note-content").val(); - var id = $(".elementId").html(); - var date = $.datepicker.formatDate('dd/mm/yy', new Date()); + //Ajout d'une note sur un compte client + $(".add-note").submit(function() { + var form = $(this).get(0); + var title = $("#note-title").val(); + var content = $("#note-content").val(); + var id = $(".elementId").html(); + var date = $.datepicker.formatDate('dd/mm/yy', new Date()); - $.get(createUrl("/wikitty-json/save?extension=Note&Note.target=", id, - "&Note.title=", title, - "&Note.content=", content, - "&Note.date=", date),function(data){ - //success - var note; - $.each(data, function(key, val) { - if (key=="fieldValue"){ - var savedDate = new Date(val["Note.date"]); + $.get(createUrl("/wikitty-json/save?extension=Note&Note.target=", id, + "&Note.title=", title, + "&Note.content=", content, + "&Note.date=", date),function(data){ + //success + var note; + $.each(data, function(key, val) { + if (key=="fieldValue"){ + var savedDate = new Date(val["Note.date"]); - note = $('<li><h6 class="pull-left"><i class="icon-comment"></i> ' + - val["Note.title"] +'</h6><small class="pull-right note-date">' + - $.datepicker.formatDate('dd-mm-yy', savedDate) + - '</small><div style="clear:both;"/><small>' + - val["Note.content"] + '</small></li>'); - } - }); - var notes = $(".notes"); - notes.prepend(note); - form.reset(); - }).fail(function(){ - //fail - //TODO JC20130210 retour utilisateur + note = $('<li><h6 class="pull-left"><i class="icon-comment"></i> ' + + val["Note.title"] +'</h6><small class="pull-right note-date">' + + $.datepicker.formatDate('dd-mm-yy', savedDate) + + '</small><div style="clear:both;"/><small>' + + val["Note.content"] + '</small></li>'); + } + }); + var notes = $(".notes"); + notes.prepend(note); + form.reset(); + }).fail(function(){ + //fail + //TODO JC20130210 retour utilisateur - }); + }); - return false; - }); + return false; + }); - // ******************************************************************** - // * SALES FUNNEL * - // ******************************************************************** + // ******************************************************************** + // * SALES FUNNEL * + // ******************************************************************** - function leadToDraft() { - var id = $(this).attr('wikittyId'); - var oldQuotation = $(this).parent(); - $.get(createUrl("/sales/funnel/json/answer/", id), - function(data){ - //success - var wikittyId = data.meta.id; - var wikitty = data.data; + function leadToDraft() { + var id = $(this).attr('wikittyId'); + var oldQuotation = $(this).parent(); + $.get(createUrl("/sales/funnel/json/answer/", id), + function(data){ + //success + var wikittyId = data.meta.id; + var wikitty = data.data; - var li = $("<li></li>").addClass("salesFunnelItem draft"); + var li = $("<li></li>").addClass("salesFunnelItem draft"); - //leftDiv - var leftDiv = $("<div></div>").addClass("pull-left"); - var aIconEdit = $("<a></a>") - .attr("href", createUrl("/wikitty/edit/", wikittyId)); - var iconEdit = $("<i></i>").addClass("icon-edit"); - aIconEdit.append(iconEdit); - leftDiv.append(aIconEdit); - var smallAccount = $("<small></small>"); - if (wikitty["Quotation.customer"]!=null){ - var customer = data.preloaded[wikitty["Quotation.customer"]]; - var firstName = customer.preloaded[customer.data["Employee.person"]].data["Person.firstName"]; - var lastName = customer.preloaded[customer.data["Employee.person"]].data["Person.lastName"]; - var company = customer.preloaded[customer.data["Employee.company"]].data["Company.name"]; - } - var aAccount = $("<a></a>") - .text(firstName + " " + lastName + " (" + company + ")") - .attr("href",createUrl("/wikitty/Employee/view/", wikitty["Quotation.customer"])); - smallAccount.append(aAccount); - leftDiv.append(smallAccount); - var leftP = $("<p> - </p>"); - var itemTitleSpan = $('<span></span>').addClass('salesFunnelItemTitle'); + //leftDiv + var leftDiv = $("<div></div>").addClass("pull-left"); + var aIconEdit = $("<a></a>") + .attr("href", createUrl("/wikitty/edit/", wikittyId)); + var iconEdit = $("<i></i>").addClass("icon-edit"); + aIconEdit.append(iconEdit); + leftDiv.append(aIconEdit); + var smallAccount = $("<small></small>"); + if (wikitty["Quotation.customer"]!=null){ + var customer = data.preloaded[wikitty["Quotation.customer"]]; + var firstName = customer.preloaded[customer.data["Employee.person"]].data["Person.firstName"]; + var lastName = customer.preloaded[customer.data["Employee.person"]].data["Person.lastName"]; + var company = customer.preloaded[customer.data["Employee.company"]].data["Company.name"]; + } + var aAccount = $("<a></a>") + .text(firstName + " " + lastName + " (" + company + ")") + .attr("href",createUrl("/wikitty/Employee/view/", wikitty["Quotation.customer"])); + smallAccount.append(aAccount); + leftDiv.append(smallAccount); + var leftP = $("<p> - </p>"); + var itemTitleSpan = $('<span></span>').addClass('salesFunnelItemTitle'); - if (wikitty["Quotation.project"]!=null) { - var aProject = $("<a/>") - .addClass("nameLink") - .attr("href" , createUrl("/wikitty/Project/view/", wikitty["Quotation.project"])) - .text(data.preloaded[wikitty["Quotation.project"]].data["Project.name"]); - } - itemTitleSpan.append(aProject); - var descriptionSmall = $('<small/>').text(wikitty["Quotation.description"]); - leftP.append(descriptionSmall); - leftP.prepend(itemTitleSpan); - leftDiv.append(leftP); + if (wikitty["Quotation.project"]!=null) { + var aProject = $("<a/>") + .addClass("nameLink") + .attr("href" , createUrl("/wikitty/Project/view/", wikitty["Quotation.project"])) + .text(data.preloaded[wikitty["Quotation.project"]].data["Project.name"]); + } + itemTitleSpan.append(aProject); + var descriptionSmall = $('<small/>').text(wikitty["Quotation.description"]); + leftP.append(descriptionSmall); + leftP.prepend(itemTitleSpan); + leftDiv.append(leftP); - //button - var aSend = $('<a/>') - .attr('wikittyId', wikittyId) - .addClass("btn btn-success pull-right salesFunnelItemButton draft") - .text("Envoyer") - .click(draftToSent); + //button + var aSend = $('<a/>') + .attr('wikittyId', wikittyId) + .addClass("btn btn-success pull-right salesFunnelItemButton draft") + .text("Envoyer") + .click(draftToSent); - //rightDiv - var rightDiv = $("<div>").addClass("pull-right"); - var rightP = $("<p>").addClass("salesFunnelItemTitle").text(wikitty["Quotation.amount"] +" €"); - if (wikitty["Quotation.category"] != null) { - var smallInfo = $("<small>") - .text(data.preloaded[wikitty["Quotation.category"]].data["WikittyTreeNode.name"] - + ' - ' + wikitty["Quotation.estimatedDays"] + 'j - ' + - wikitty["Quotation.conversionHope"] + "%"); - } - rightDiv.append(rightP); - rightDiv.append(smallInfo); + //rightDiv + var rightDiv = $("<div>").addClass("pull-right"); + var rightP = $("<p>").addClass("salesFunnelItemTitle").text(wikitty["Quotation.amount"] +" €"); + if (wikitty["Quotation.category"] != null) { + var smallInfo = $("<small>") + .text(data.preloaded[wikitty["Quotation.category"]].data["WikittyTreeNode.name"] + + ' - ' + wikitty["Quotation.estimatedDays"] + 'j - ' + + wikitty["Quotation.conversionHope"] + "%"); + } + rightDiv.append(rightP); + rightDiv.append(smallInfo); - //clear:both - var clearBoth=$("<div style='clear:both;'/>") + //clear:both + var clearBoth=$("<div style='clear:both;'/>") - li.append(leftDiv); - li.append(aSend); - li.append(rightDiv); - li.append(clearBoth); + li.append(leftDiv); + li.append(aSend); + li.append(rightDiv); + li.append(clearBoth); - var drafts = $(".drafts"); - drafts.append(li); - oldQuotation.slideUp(); + var drafts = $(".drafts"); + drafts.append(li); + oldQuotation.slideUp(); - //update draftAmount and draftAmountHope - var draftAmount = parseInt($("#draftAmount").text()) + wikitty["Quotation.amount"]; - var amountHope = wikitty["Quotation.amount"]*wikitty["Quotation.conversionHope"]/100; - var draftAmountHope = parseInt($("#draftAmountHope").text()) + amountHope; - $("#draftAmount").text(draftAmount); - $("#draftAmountHope").text(draftAmountHope); + //update draftAmount and draftAmountHope + var draftAmount = parseInt($("#draftAmount").text()) + wikitty["Quotation.amount"]; + var amountHope = wikitty["Quotation.amount"]*wikitty["Quotation.conversionHope"]/100; + var draftAmountHope = parseInt($("#draftAmountHope").text()) + amountHope; + $("#draftAmount").text(draftAmount); + $("#draftAmountHope").text(draftAmountHope); - //update leadAmount and leadAmountHope - var leadAmount = parseInt($("#leadAmount").text()) - wikitty["Quotation.amount"]; - var leadAmountHope = parseInt($("#leadAmountHope").text()) - amountHope; - $("#leadAmount").text(leadAmount); - $("#leadAmountHope").text(leadAmountHope); + //update leadAmount and leadAmountHope + var leadAmount = parseInt($("#leadAmount").text()) - wikitty["Quotation.amount"]; + var leadAmountHope = parseInt($("#leadAmountHope").text()) - amountHope; + $("#leadAmount").text(leadAmount); + $("#leadAmountHope").text(leadAmountHope); - }).fail(function(){ - //fail - //TODO JC20130212 retour utilisateur - }); - } + }).fail(function(){ + //fail + //TODO JC20130212 retour utilisateur + }); + } - function draftToSent() { - var id = $(this).attr('wikittyId'); - var oldQuotation = $(this).parent(); - $.get(createUrl("/sales/funnel/json/send/", id), - function(data){ - //success + function draftToSent() { + var id = $(this).attr('wikittyId'); + var oldQuotation = $(this).parent(); + $.get(createUrl("/sales/funnel/json/send/", id), + function(data){ + //success - var wikittyId = data.meta.id; - var wikitty = data.data; + var wikittyId = data.meta.id; + var wikitty = data.data; - var li = $("<li></li>").addClass("salesFunnelItem draft"); + var li = $("<li></li>").addClass("salesFunnelItem draft"); - //leftDiv - var leftDiv = $("<div></div>").addClass("pull-left"); - var aIconEdit = $("<a></a>") - .attr("href",createUrl("/wikitty/edit/", wikittyId)); - var iconEdit = $("<i></i>").addClass("icon-edit"); - aIconEdit.append(iconEdit); - leftDiv.append(aIconEdit); - var smallAccount = $("<small></small>"); - if (wikitty["Quotation.customer"]!=null){ - var customer = data.preloaded[wikitty["Quotation.customer"]]; - var firstName = customer.preloaded[customer.data["Employee.person"]].data["Person.firstName"]; - var lastName = customer.preloaded[customer.data["Employee.person"]].data["Person.lastName"]; - var company = customer.preloaded[customer.data["Employee.company"]].data["Company.name"]; - } - var aAccount = $("<a></a>") - .text(firstName + " " + lastName + " (" + company + ")") - .attr("href", createUrl("/wikitty/Employee/view/", wikitty["Quotation.customer"])); - smallAccount.append(aAccount); - leftDiv.append(smallAccount); - var leftP = $("<p> - </p>"); - var itemTitleSpan = $('<span></span>').addClass('salesFunnelItemTitle'); + //leftDiv + var leftDiv = $("<div></div>").addClass("pull-left"); + var aIconEdit = $("<a></a>") + .attr("href",createUrl("/wikitty/edit/", wikittyId)); + var iconEdit = $("<i></i>").addClass("icon-edit"); + aIconEdit.append(iconEdit); + leftDiv.append(aIconEdit); + var smallAccount = $("<small></small>"); + if (wikitty["Quotation.customer"]!=null){ + var customer = data.preloaded[wikitty["Quotation.customer"]]; + var firstName = customer.preloaded[customer.data["Employee.person"]].data["Person.firstName"]; + var lastName = customer.preloaded[customer.data["Employee.person"]].data["Person.lastName"]; + var company = customer.preloaded[customer.data["Employee.company"]].data["Company.name"]; + } + var aAccount = $("<a></a>") + .text(firstName + " " + lastName + " (" + company + ")") + .attr("href", createUrl("/wikitty/Employee/view/", wikitty["Quotation.customer"])); + smallAccount.append(aAccount); + leftDiv.append(smallAccount); + var leftP = $("<p> - </p>"); + var itemTitleSpan = $('<span></span>').addClass('salesFunnelItemTitle'); - if (wikitty["Quotation.project"]!=null) { - var aProject = $("<a/>") - .addClass("nameLink") - .attr("href" , createUrl("/wikitty/Project/view/", wikitty["Quotation.project"])) - .text(data.preloaded[wikitty["Quotation.project"]].data["Project.name"]); - } - itemTitleSpan.append(aProject); - var descriptionSmall = $('<small/>').text(wikitty["Quotation.description"]); - leftP.append(descriptionSmall); - leftP.prepend(itemTitleSpan); - leftDiv.append(leftP); + if (wikitty["Quotation.project"]!=null) { + var aProject = $("<a/>") + .addClass("nameLink") + .attr("href" , createUrl("/wikitty/Project/view/", wikitty["Quotation.project"])) + .text(data.preloaded[wikitty["Quotation.project"]].data["Project.name"]); + } + itemTitleSpan.append(aProject); + var descriptionSmall = $('<small/>').text(wikitty["Quotation.description"]); + leftP.append(descriptionSmall); + leftP.prepend(itemTitleSpan); + leftDiv.append(leftP); - //button - var aAccepted = $('<a/>') - .attr('wikittyId', wikittyId) - .addClass("btn btn-success pull-right salesFunnelItemButton sent toAccepted") - .text("Accepté") - .click(sentToAccepted); - var aRejected = $('<a/>') - .attr('wikittyId', wikittyId) - .addClass("btn btn-danger pull-right salesFunnelItemButton sent toRejected") - .text("Rejeté") - .click(sentToRejected); + //button + var aAccepted = $('<a/>') + .attr('wikittyId', wikittyId) + .addClass("btn btn-success pull-right salesFunnelItemButton sent toAccepted") + .text("Accepté") + .click(sentToAccepted); + var aRejected = $('<a/>') + .attr('wikittyId', wikittyId) + .addClass("btn btn-danger pull-right salesFunnelItemButton sent toRejected") + .text("Rejeté") + .click(sentToRejected); - //rightDiv - var rightDiv = $("<div>").addClass("pull-right"); - var rightP = $("<p>").addClass("salesFunnelItemTitle").text(wikitty["Quotation.amount"] +" €"); - if (wikitty["Quotation.category"] != null) { - var smallInfo = $("<small>") - .text(data.preloaded[wikitty["Quotation.category"]].data["WikittyTreeNode.name"] - + ' - ' + wikitty["Quotation.estimatedDays"] + 'j - ' + - wikitty["Quotation.conversionHope"] + "%"); - } - rightDiv.append(rightP); - rightDiv.append(smallInfo); + //rightDiv + var rightDiv = $("<div>").addClass("pull-right"); + var rightP = $("<p>").addClass("salesFunnelItemTitle").text(wikitty["Quotation.amount"] +" €"); + if (wikitty["Quotation.category"] != null) { + var smallInfo = $("<small>") + .text(data.preloaded[wikitty["Quotation.category"]].data["WikittyTreeNode.name"] + + ' - ' + wikitty["Quotation.estimatedDays"] + 'j - ' + + wikitty["Quotation.conversionHope"] + "%"); + } + rightDiv.append(rightP); + rightDiv.append(smallInfo); - //clear:both - var clearBoth=$("<div style='clear:both;'/>") + //clear:both + var clearBoth=$("<div style='clear:both;'/>") - li.append(leftDiv); - li.append(aAccepted); - li.append(aRejected); - li.append(rightDiv); - li.append(clearBoth); + li.append(leftDiv); + li.append(aAccepted); + li.append(aRejected); + li.append(rightDiv); + li.append(clearBoth); - var sents = $(".sents"); - sents.append(li); - oldQuotation.slideUp(); + var sents = $(".sents"); + sents.append(li); + oldQuotation.slideUp(); - //update draftAmount and draftAmountHope - var draftAmount = parseInt($("#draftAmount").text()) - wikitty["Quotation.amount"]; - var amountHope = wikitty["Quotation.amount"]*wikitty["Quotation.conversionHope"]/100; - var draftAmountHope = parseInt($("#draftAmountHope").text()) - amountHope; - $("#draftAmount").text(draftAmount); - $("#draftAmountHope").text(draftAmountHope); + //update draftAmount and draftAmountHope + var draftAmount = parseInt($("#draftAmount").text()) - wikitty["Quotation.amount"]; + var amountHope = wikitty["Quotation.amount"]*wikitty["Quotation.conversionHope"]/100; + var draftAmountHope = parseInt($("#draftAmountHope").text()) - amountHope; + $("#draftAmount").text(draftAmount); + $("#draftAmountHope").text(draftAmountHope); - //update sentAmount and sentAmountHope - var sentAmount = parseInt($("#sentAmount").text()) + wikitty["Quotation.amount"]; - var sentAmountHope = parseInt($("#sentAmountHope").text()) + amountHope; - $("#sentAmount").text(sentAmount); - $("#sentAmountHope").text(sentAmountHope); + //update sentAmount and sentAmountHope + var sentAmount = parseInt($("#sentAmount").text()) + wikitty["Quotation.amount"]; + var sentAmountHope = parseInt($("#sentAmountHope").text()) + amountHope; + $("#sentAmount").text(sentAmount); + $("#sentAmountHope").text(sentAmountHope); - }).fail(function(){ - //fail - //TODO JC20130212 retour utilisateur - }); - } + }).fail(function(){ + //fail + //TODO JC20130212 retour utilisateur + }); + } - function sentToRejected(){ - var id = $(this).attr('wikittyId'); - var oldQuotation = $(this).parent(); - $.get(createUrl("/sales/funnel/json/reject/", id), - function(data){ - //success - oldQuotation.slideUp(); + function sentToRejected(){ + var id = $(this).attr('wikittyId'); + var oldQuotation = $(this).parent(); + $.get(createUrl("/sales/funnel/json/reject/", id), + function(data){ + //success + oldQuotation.slideUp(); - var wikitty = data.data; + var wikitty = data.data; - //update sentAmount and sentAmountHope - var sentAmount = parseInt($("#sentAmount").text()) - wikitty["Quotation.amount"]; - var amountHope = wikitty["Quotation.amount"]*wikitty["Quotation.conversionHope"]/100; - var sentAmountHope = parseInt($("#sentAmountHope").text()) - amountHope; - $("#sentAmount").text(sentAmount); - $("#sentAmountHope").text(sentAmountHope); - }).fail(function(){ - //fail - //TODO JC20130212 retour utilisateur - }); - } + //update sentAmount and sentAmountHope + var sentAmount = parseInt($("#sentAmount").text()) - wikitty["Quotation.amount"]; + var amountHope = wikitty["Quotation.amount"]*wikitty["Quotation.conversionHope"]/100; + var sentAmountHope = parseInt($("#sentAmountHope").text()) - amountHope; + $("#sentAmount").text(sentAmount); + $("#sentAmountHope").text(sentAmountHope); + }).fail(function(){ + //fail + //TODO JC20130212 retour utilisateur + }); + } - function sentToAccepted(){ - var id = $(this).attr('wikittyId'); - var oldQuotation = $(this).parent(); - $.get(createUrl("/sales/funnel/json/accept/", id), - function(data){ - //success - oldQuotation.slideUp(); + function sentToAccepted(){ + var id = $(this).attr('wikittyId'); + var oldQuotation = $(this).parent(); + $.get(createUrl("/sales/funnel/json/accept/", id), + function(data){ + //success + oldQuotation.slideUp(); - var wikitty = data.data; + var wikitty = data.data; - //update sentAmount and sentAmountHope - var sentAmount = parseInt($("#sentAmount").text()) - wikitty["Quotation.amount"]; - var amountHope = wikitty["Quotation.amount"]*wikitty["Quotation.conversionHope"]/100; - var sentAmountHope = parseInt($("#sentAmountHope").text()) - amountHope; - $("#sentAmount").text(sentAmount); - $("#sentAmountHope").text(sentAmountHope); - }).fail(function(){ - //fail - //TODO JC20130212 retour utilisateur - }); - } + //update sentAmount and sentAmountHope + var sentAmount = parseInt($("#sentAmount").text()) - wikitty["Quotation.amount"]; + var amountHope = wikitty["Quotation.amount"]*wikitty["Quotation.conversionHope"]/100; + var sentAmountHope = parseInt($("#sentAmountHope").text()) - amountHope; + $("#sentAmount").text(sentAmount); + $("#sentAmountHope").text(sentAmountHope); + }).fail(function(){ + //fail + //TODO JC20130212 retour utilisateur + }); + } - //Passage d'un lead -> draft - $("a.lead").click(leadToDraft); + //Passage d'un lead -> draft + $("a.lead").click(leadToDraft); - //Passage d'un draft -> sent - $("a.draft").click(draftToSent); + //Passage d'un draft -> sent + $("a.draft").click(draftToSent); - //Passage d'un sent vers accepted - $("a.toAccepted").click(sentToAccepted); + //Passage d'un sent vers accepted + $("a.toAccepted").click(sentToAccepted); - //Passage d'un sent vers rejected - $("a.toRejected").click(sentToRejected); + //Passage d'un sent vers rejected + $("a.toRejected").click(sentToRejected); + + + // ******************************************************************** + // * PROJECT DASHBOARD * + // ******************************************************************** + + function upgradeQuotation() { + + + } + + + + function displayFields() { + var id = $(this).attr('wikittyId'); + $("#upgradeFields-" + id ).text("Loading fields for " + this.item(this.selectedIndex).label + "..."); + var extensionName = this.item(this.selectedIndex).label; + $.get(createUrl("/project/json/getExtension/", extensionName, "/" + $(this).attr('wikittyId')), + function(data){ + //success + var el = document.createElement( 'div' ); + el.innerHTML = data; + + var view = el.getElementsByClassName("well")[0]; + var dateFields = view.getElementsByClassName("datepicker"); + var d = new Date(); + for(var i = 0; i < dateFields.length; i++) { + dateFields[i].value = d.getDate() + "/" + (d.getMonth() +1) + "/" + d.getFullYear(); + //alert(dateFields[i].value); + } + + $("#upgradeFields-" + id).html(view.innerHTML); + initFields(); + + + + }); + + } + + $("a.upgrade").click(upgradeQuotation); + $("select.extBox").change(displayFields); + $("#project_hidden").change(function() { + $("#projectSearch").submit(); + }); }); \ No newline at end of file
participants (1)
-
meynier@users.chorem.org